package roaring

type shortIterable interface {
	hasNext() bool
	next() uint16
}

type shortPeekable interface {
	shortIterable
	peekNext() uint16
	advanceIfNeeded(minval uint16)
}

type shortIterator struct {
	slice []uint16
	loc   int
}

func ( *shortIterator) () bool {
	return .loc < len(.slice)
}

func ( *shortIterator) () uint16 {
	 := .slice[.loc]
	.loc++
	return 
}

func ( *shortIterator) () uint16 {
	return .slice[.loc]
}

func ( *shortIterator) ( uint16) {
	if .hasNext() && .peekNext() <  {
		.loc = advanceUntil(.slice, .loc, len(.slice), )
	}
}

type reverseIterator struct {
	slice []uint16
	loc   int
}

func ( *reverseIterator) () bool {
	return .loc >= 0
}

func ( *reverseIterator) () uint16 {
	 := .slice[.loc]
	.loc--
	return 
}